﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Text.RegularExpressions;
using System.Web.UI.WebControls;
using vudu.ClasesDominio;
using vudu.Logica.Fachada;
using vudu.Presentacion.Contrato.VU_06_Gestionar_Profesores;


namespace vudu.Presentacion.Presentador.VU_06_Gestionar_Profesores
{
    public class PresentadorAgregarProfesorExistente
    {
        private IContratoAgregarProfesorExistente _vista;
        private EnlaceLogico _fachada = new EnlaceLogico();
        private Escuela esc;
        private System.Drawing.Color _colorMensajeError = System.Drawing.Color.Red;
        private System.Drawing.Color _colorMensajeExitoso = System.Drawing.Color.Green;
        private System.Drawing.Color _colorLabelBase = System.Drawing.Color.Black;
        private String _classMensajeExitoso = "transaccionExitosa";
        private String _classMensajeError = "transaccionFallida";

        public PresentadorAgregarProfesorExistente(IContratoAgregarProfesorExistente vista, EnlaceLogico fachada)
        {
            _vista = vista;
            esc = (Escuela)fachada.RolActual;

        }


        public void ConsultaProfesor()
        {
            _vista.Mensaje.Visible = false;
            Rol profesor = _fachada.EnlaceCrearProfesor();

            if (_vista.Cedula.Text == "")
            {
                _vista.Mensaje.CssClass = "transaccionFallida";
                _vista.Mensaje.Text = "Por favor introduzca la cedula del profesor.";
                _vista.Mensaje.Visible = true;  
            }

            else
            {
                int cedula = Convert.ToInt32(_vista.Cedula.Text);
            profesor = _fachada.EnlaceConsultarProfesorExistente(cedula,esc.IdEscuela);

            if (((Profesor)profesor).Cedula!=0)
            {
                CargarTabla((Profesor)profesor);
                _vista.ContratoP.Visible = true;
                _vista.Profesor.Visible = true;
                _vista.Aceptar.Visible = true;
                
            }

            else 
            {
                _vista.Mensaje.Visible = true;
                _vista.Mensaje.ForeColor = System.Drawing.Color.Red;
                _vista.Mensaje.CssClass = _classMensajeError;
                _vista.Mensaje.Text = "Operacion fallida: El profesor no existe o ya esta ingresado en la escuela";
                _vista.ContratoP.Visible = false;
                _vista.Profesor.Visible = false;
                _vista.Aceptar.Visible = false;
            }

            }

        }

        public void CargarTabla(Profesor profesor)
        {
            DataTable tabla = new DataTable();
            tabla.Columns.Add("CRN", typeof (int));
            tabla.Columns.Add("C.I.", typeof (string));
            tabla.Columns.Add("Nombre", typeof (string));
            tabla.Columns.Add("email", typeof (string));
            tabla.Columns.Add("Fecha de Nacimiento", typeof (string));
            tabla.Columns.Add("Telefono", typeof (string));


            string nombreProfesor = profesor.Nombre;
            if (nombreProfesor != null)
            {
                tabla.Rows.Add(profesor.Crn, profesor.Nacionalidad + " - " + Convert.ToString(profesor.Cedula),
                               profesor.Nombre + ' ' +
                               profesor.Apellido, profesor.Email, profesor.FechaNacimiento.ToString("dd/MM/yyyy"),
                               profesor.Telefono);
            }
            _vista.ProfesorConsultado.DataSource= tabla;
            _vista.Profesor.DataBind();
        }

        public void AgregarExistente ()
        {
            if (ValidarFechas(_vista.FechaInicioContratoProfesor.Text, _vista.FechaFinContratoProfesor.Text,
                _vista.lFechaI, _vista.lFechaF))
            {
                Rol profesor = _fachada.EnlaceCrearProfesor();
                int idprof = 0;
                ((Profesor)profesor).Cedula = Convert.ToInt32(_vista.Cedula.Text);
                ((Profesor) profesor).TiempoLaboral = _vista.Contrato.Text;
                ((Profesor) profesor).Cargo = _vista.Cargo.Text;
                ((Profesor)profesor).FechaInicio = Convert.ToDateTime(_vista.FechaInicioContratoProfesor.Text);
                ((Profesor)profesor).FechaFin = Convert.ToDateTime(_vista.FechaFinContratoProfesor.Text);

                idprof = _fachada.EnlaceAgregarProfesorExistente((Profesor)profesor, esc.IdEscuela);


                if (idprof!=0)
                {
                    _vista.Mensaje.ForeColor = System.Drawing.Color.Green;
                    _vista.lFechaF.ForeColor = System.Drawing.Color.Black;
                    _vista.lFechaI.ForeColor = System.Drawing.Color.Black;
                    _vista.Mensaje.CssClass = _classMensajeExitoso;
                    _vista.Mensaje.Visible = true;
                    _vista.Mensaje.Text = "Operacion exitosa: El profesor fue ingresado en la escuela";
            
                }

                else
                {
                _vista.Mensaje.ForeColor = System.Drawing.Color.Red;
                _vista.Mensaje.CssClass = _classMensajeError;
                _vista.Mensaje.Visible = true;
                _vista.Mensaje.Text = "Operacion fallida, no se pudo ingresar al profesor en esta escuela.";
                _vista.ContratoP.Visible = false;
                _vista.Profesor.Visible = false;
                _vista.Aceptar.Visible = false;

               }
            }

            else
            {
                _vista.Mensaje.ForeColor = System.Drawing.Color.Red;
                _vista.Mensaje.Visible = true;
                _vista.Mensaje.Text = "Fechas invalidas, por favor intente de nuevo.";
            }

        }

        public bool ValidarFechas(string _fecha1, string _fecha2, Label lvalidar1, Label lvalidar2)
        {


            if (_fecha1 == "" || _fecha2 == "")

            {
                CambiarLabel(lvalidar1, false);
                CambiarLabel(lvalidar2,false);
                return false;
            }

            else
            {
                DateTime fecha1 = Convert.ToDateTime(_fecha1);
                DateTime fecha2 = Convert.ToDateTime(_fecha2);

                if (fecha1 > fecha2)
                {
                    CambiarLabel(lvalidar1, false);
                    CambiarLabel(lvalidar2, false);
                    return false;
                }

                else
                {
                    return true;
                }
            }


        }

        public void CambiarLabel(Label aCambiar, bool validacion)
        {
            if (validacion)
            {
                aCambiar.ForeColor = _colorLabelBase;
            }
            else
            {
                aCambiar.ForeColor = _colorMensajeError;
            }
        }

    }
}